@echo off
REM ======== MyJSONParser 安装脚本 (install.bat) ========

SETLOCAL EnableDelayedExpansion

REM 默认安装路径
SET default_install_path=C:\MyJSONParser

REM 处理命令行参数
SET install_path=%default_install_path%

REM 检查是否提供了安装路径参数
IF NOT "%~1"=="" (
    SET install_path=%~1
)

REM 如果是相对路径，转换为绝对路径
IF "!install_path:~0,1!"=="." (
    FOR /F "delims=" %%i IN ("%CD%") DO SET current_dir=%%~fi
    SET install_path=!current_dir!\!install_path:~2!
)

ECHO ====== MyJSONParser 安装工具 ======
ECHO.
ECHO 将使用以下配置:
ECHO 安装路径: %install_path%
ECHO.

REM 检查构建输出是否存在
SET missing_build=
IF NOT EXIST "bin\Debug-windows-x86_64\MyJSONParser\MyJSONParser.lib" (
    ECHO 警告: 未找到Debug构建输出。
    SET missing_build=1
)

IF NOT EXIST "bin\Release-windows-x86_64\MyJSONParser\MyJSONParser.lib" (
    ECHO 警告: 未找到Release构建输出。
    SET missing_build=1
)

IF DEFINED missing_build (
    ECHO 部分构建输出缺失。请确保已运行build.bat构建项目。
    ECHO 是否要继续安装？[Y/N]
    SET /P continue=
    IF /I NOT "!continue!"=="Y" (
        ECHO 安装已取消。
        GOTO :EOF
    )
)

ECHO 步骤 1: 创建安装目录结构
IF NOT EXIST "%install_path%\" (
    ECHO 创建安装目录: %install_path%
    MKDIR "%install_path%\"
    IF %ERRORLEVEL% NEQ 0 (
        ECHO 错误: 无法创建安装目录。请检查路径和权限。
        GOTO :ERROR
    )
)

IF NOT EXIST "%install_path%\bin\" MKDIR "%install_path%\bin\"
IF NOT EXIST "%install_path%\lib\" MKDIR "%install_path%\lib\"
IF NOT EXIST "%install_path%\include\MyJSONParser\" MKDIR "%install_path%\include\MyJSONParser\"

ECHO 步骤 2: 复制库文件和头文件
ECHO 复制库文件...

REM 复制库文件 - 使用条件复制以避免错误
IF EXIST "bin\Debug-windows-x86_64\MyJSONParser\MyJSONParser.lib" (
    COPY "bin\Debug-windows-x86_64\MyJSONParser\MyJSONParser.lib" "%install_path%\lib\MyJSONParser-d.lib" >nul
    ECHO - Debug库文件已复制
) ELSE (
    ECHO - 跳过Debug库文件(不存在)
)

IF EXIST "bin\Release-windows-x86_64\MyJSONParser\MyJSONParser.lib" (
    COPY "bin\Release-windows-x86_64\MyJSONParser\MyJSONParser.lib" "%install_path%\lib\MyJSONParser.lib" >nul
    ECHO - Release库文件已复制
) ELSE (
    ECHO - 跳过Release库文件(不存在)
)

IF EXIST "bin\Dist-windows-x86_64\MyJSONParser\MyJSONParser.lib" (
    COPY "bin\Dist-windows-x86_64\MyJSONParser\MyJSONParser.lib" "%install_path%\lib\MyJSONParser-dist.lib" >nul
    ECHO - Dist库文件已复制
) ELSE (
    ECHO - 跳过Dist库文件(不存在)
)

ECHO 复制头文件...
REM 使用更直接的方法复制头文件
SET src_header_dir=MyJSONParser\src
IF EXIST "%src_header_dir%" (
    ECHO - 源头文件目录: %src_header_dir%
    ECHO - 目标头文件目录: %install_path%\include\MyJSONParser\
    
    REM 显示调试信息 - 列出源目录中的头文件
    ECHO - 源目录中的头文件:
    DIR /B /S "%src_header_dir%\*.h" 2>nul
    
    REM 使用XCOPY复制所有头文件，保持目录结构
    XCOPY "%src_header_dir%\*.h" "%install_path%\include\MyJSONParser\" /S /Y /I
    IF %ERRORLEVEL% NEQ 0 (
        ECHO - 警告: XCOPY命令返回错误代码 %ERRORLEVEL%
        
        REM 尝试手动复制每个头文件
        ECHO - 尝试手动复制头文件...
        FOR /R "%src_header_dir%" %%F IN (*.h) DO (
            ECHO   处理: %%F
            SET "dest_file=%%F"
            SET "dest_file=!dest_file:%CD%\%src_header_dir%=%install_path%\include\MyJSONParser%!"
            SET "dest_dir=%%~dpF"
            SET "dest_dir=!dest_dir:%CD%\%src_header_dir%=%install_path%\include\MyJSONParser%!"
            
            ECHO   目标目录: !dest_dir!
            IF NOT EXIST "!dest_dir!" (
                MKDIR "!dest_dir!" 2>nul
            )
            COPY "%%F" "!dest_file!" >nul 2>&1
            IF !ERRORLEVEL! NEQ 0 (
                ECHO   警告: 无法复制 %%F 到 !dest_file!
            ) ELSE (
                ECHO   成功复制到: !dest_file!
            )
        )
    ) ELSE (
        ECHO - 头文件复制成功
    )
) ELSE (
    ECHO - 跳过头文件(源目录不存在: %src_header_dir%)
)

ECHO 复制可执行文件...
IF EXIST "bin\Debug-windows-x86_64\Test\Test.exe" (
    COPY "bin\Debug-windows-x86_64\Test\Test.exe" "%install_path%\bin\Test-d.exe" >nul
    ECHO - Debug测试可执行文件已复制
) ELSE (
    ECHO - 跳过Debug测试可执行文件(不存在)
)

IF EXIST "bin\Release-windows-x86_64\Test\Test.exe" (
    COPY "bin\Release-windows-x86_64\Test\Test.exe" "%install_path%\bin\Test.exe" >nul
    ECHO - Release测试可执行文件已复制
) ELSE (
    ECHO - 跳过Release测试可执行文件(不存在)
)

IF EXIST "bin\Dist-windows-x86_64\Test\Test.exe" (
    COPY "bin\Dist-windows-x86_64\Test\Test.exe" "%install_path%\bin\Test-dist.exe" >nul
    ECHO - Dist测试可执行文件已复制
) ELSE (
    ECHO - 跳过Dist测试可执行文件(不存在)
)

ECHO 步骤 3: 创建环境变量设置批处理文件
(
    ECHO @echo off
    ECHO REM 添加MyJSONParser库到环境变量
    ECHO SET MYJSONPARSER_DIR=%install_path%
    ECHO SET PATH=%%PATH%%;%%MYJSONPARSER_DIR%%\bin
    ECHO ECHO MyJSONParser环境变量已设置
) > "%install_path%\setup_env.bat"

ECHO.
ECHO ====== 安装完成 ======
ECHO.
ECHO MyJSONParser已安装到: %install_path%
ECHO.
ECHO 使用以下目录结构:
ECHO - %install_path%\lib\         - 库文件
ECHO - %install_path%\include\     - 头文件
ECHO - %install_path%\bin\         - 可执行文件
ECHO.
ECHO 要设置环境变量，请运行: %install_path%\setup_env.bat
ECHO.

GOTO :EOF

:ERROR
ECHO.
ECHO 安装过程中出现错误！
PAUSE
EXIT /B 1
